iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

數獨
在9格寬×9格高的大九宮格中有9個3格寬×3格高的小九宮格
,每一列與每一行的數字均須包含 1~9,不能缺少,也不
能重複。每一小九宮格(3*3的九宮格)的數字均須包含 1~
9,不能缺少,也不能重複。

輸入一組測試資料為9x9的矩陣,判斷九宮格數字是不是一個
數獨的正解。

輸入說明 :

輸入九列數據,每一列輸入為9個整數分別由空格分開。

輸出說明 :

輸出Yes or No代表九宮格數字是不是一個數獨的正解。


輸入範例

1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 1
3 4 5 6 7 8 9 1 2
4 5 6 7 8 9 1 2 3
5 6 7 8 9 1 2 3 4
6 7 8 9 1 2 3 4 5
7 8 9 1 2 3 4 5 6
8 9 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7 8

輸出範例

No

輸入範例

1 9 3 2 6 5 4 7 8
7 8 2 3 1 4 9 5 6
4 5 6 9 7 8 1 3 2
2 3 4 8 5 1 6 9 7
9 6 5 4 3 7 2 8 1
8 7 1 6 9 2 3 4 5
3 1 9 5 8 6 7 2 4
5 2 7 1 4 3 8 6 9
6 4 8 7 2 9 5 1 3

輸出範例

Yes

#include <stdio.h>
int main(){
    int n[9][9];
    int i=0,j=0,error=0;
    int row=0,column=0;
    int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;
    for(i=0;i<9;i++){
        for(j=0;j<9;j++){
            scanf("%d",&n[i][j]);
        }
    }
    for(j=0;j<9;j++){
        for(i=0;i<9;i++){
            row=row+n[i][j];
        }
        if(row!=45){
            error=1;
            break;
        }
        row=0;
    }
    for(i=0;i<9;i++){
        for(j=0;j<9;j++){
            column=column+n[i][j];
        }
        if(column!=45){
            error=1;
            break;
        }
        column=0;
    }
    for(i=0;i<9;i++){
        for(j=0;j<9;j++){
            if(i<3 && j<3){
                a1=a1+n[i][j];
            }
            else if(i<6 && j<3){
                a2=a2+n[i][j];
            }
            else if(i<9 && j<3){
                a3=a3+n[i][j];
            }
            else if(i<3 && j<6){
                a4=a4+n[i][j];
            }
            else if(i<6 && j<6){
                a5=a5+n[i][j];
            }
            else if(i<9 && j<6){
                a6=a6+n[i][j];
            }
            else if(i<3 && j<9){
                a7=a7+n[i][j];
            }
            else if(i<6 && j<9){
                a8=a8+n[i][j];
            }
            else if(i<9 && j<9){
                a9=a9+n[i][j];
            }
        }
    }

    if(error==1 || a1!=45 || a2!=45 || a3!=45 || a4!=45 || a5!=45 || a6!=45 || a7!=45 || a8!=45 || a9!=45){
        printf("No");
    }
    else{
        printf("Yes");
    }
}
/*
#include <stdio.h>
int main(){
    int n[9][9];
    int i=0,j=0,error=0,sum=0,nn=0,m=0,fault=0;
    int row=0,column=0;
    int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;
    for(i=0;i<9;i++){
        for(j=0;j<9;j++){
            scanf("%d",&n[i][j]);
        }
    }
    for(j=0;j<9;j++){
        for(i=0;i<9;i++){
            row=row+n[i][j];
        }
        if(row!=45){
            error=1;
            break;
        }
        row=0;
    }
    for(i=0;i<9;i++){
        for(j=0;j<9;j++){
            column=column+n[i][j];
        }
        if(column!=45){
            error=1;
            break;
        }
        column=0;
    }
    while(nn<=6){
        while(m<=6){
            for(i=0+nn;i<3+nn;i++){
                for(j=0+m;j<3+m;j++){
                    sum=sum+n[i][j];
                }
            }
            if(sum!=45){
                fault=1;
                break;
            }
            m+=3;
            sum=0;
        }
        nn+=3;
    }

    if(error==1 || fault==1){
        printf("No");
    }
    else{
        printf("Yes");
    }
}
*/


上一篇
[Day19]走出迷宮
下一篇
[Day21]線段計算
系列文
環島C一下自己的人生24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言